package Leetcode;

/*给你一个正整数数组 values，其中 values[i] 表示第 i 个观光景点的评分，并且两个景点 i 和 j 之间的 距离 为 j - i。

一对景点（i < j）组成的观光组合的得分为 values[i] + values[j] + i - j ，也就是景点的评分之和 减去 它们两者之间的距离。

返回一对观光景点能取得的最高分。*/

public class Leetcode1014 {
	public static void main(String [] args) {
		
	}
}

class Solution {
    public int maxScoreSightseeingPair(int[] values) {
        int anc = 0 , n = values[0]+0;
        for(int i=1;i<values.length;i++){//利用循环一前一后的特性巧妙储存起点和终点的最大值
            anc = Math.max(anc , n+values[i]-i);    //前一运算为终点加起点，n起点，所以不用担心重复相加的问题
            n = Math.max(n,values[i]+i);    //n为起点，存储起点最大值
        }
        return anc;
    }
}

